//! # 配置管理接口模块
//! 
//! 定义配置管理的核心接口和trait。

use rustcloud_core::ServiceResult;

/// 配置管理器trait
/// 
/// 定义了配置管理的核心操作接口。
#[async_trait::async_trait]
pub trait ConfigManager: Send + Sync {
    /// 从文件加载配置
    /// 
    /// # 参数
    /// 
    /// * `path` - 配置文件路径
    /// 
    /// # 返回值
    /// 
    /// 返回加载的配置对象
    async fn load_from_file(&self, path: &str) -> ServiceResult<()>;
    
    /// 保存配置到文件
    /// 
    /// # 参数
    /// 
    /// * `path` - 配置文件路径
    /// 
    /// # 返回值
    /// 
    /// 返回操作结果
    async fn save_to_file(&self, path: &str) -> ServiceResult<()>;
    
    /// 从环境变量合并配置
    /// 
    /// # 返回值
    /// 
    /// 返回操作结果
    fn merge_from_env(&mut self) -> ServiceResult<()>;
    
    /// 验证配置的有效性
    /// 
    /// # 返回值
    /// 
    /// 返回验证结果
    fn validate(&self) -> ServiceResult<()>;
    
    /// 获取配置的JSON表示
    /// 
    /// # 返回值
    /// 
    /// 返回配置的JSON字符串
    fn to_json(&self) -> ServiceResult<String>;
    
    /// 从JSON字符串加载配置
    /// 
    /// # 参数
    /// 
    /// * `json` - 配置的JSON字符串
    /// 
    /// # 返回值
    /// 
    /// 返回操作结果
    fn from_json(&mut self, json: &str) -> ServiceResult<()>;
}